Celery 简介

您所在的位置:网站首页 zero mq 序列化 Celery 简介

Celery 简介

2023-08-07 22:45| 来源: 网络整理| 查看: 265

Celery 简介¶ 何为任务队列? 我需要什么? 上手 Celery 是… 特性 框架集成 快速跳转 安装 何为任务队列?¶

任务队列是一种在线程或机器间分发任务的机制。

消息队列的输入是工作的一个单元,称为任务,独立的职程(Worker)进程持续 监视队列中是否有需要处理的新任务。

Celery 用消息通信,通常使用中间人(Broker)在客户端和职程间斡旋。这个过程 从客户端向队列添加消息开始,之后中间人把消息派送给职程。

Celery 系统可包含多个职程和中间人,以此获得高可用性和横向扩展能力。

Celery 是用 Python 编写的,但协议可以用任何语言实现。迄今,已有 Ruby 实现 的 RCelery 、node.js 实现的 node-celery 以及一个 PHP 客户端 ,语言 互通也可以通过 using webhooks 实现。

我需要什么?¶

版本需求

Celery 的 3.0 版本可运行在

Python ❨2.5, 2.6, 2.7, 3.2, 3.3❩ PyPy ❨1.8, 1.9❩ Jython ❨2.5, 2.7❩.

这是最后一个支持 Python 2.5 的版本,也即从下个版本需要 Python 2.6 或更新版本的 Python。最后一个支持 Python 2.4 的版本为 Celery 2.2 系列。

Celery 需要一个发送和接受消息的传输者。RabbitMQ 和 Redis 中间人 的消息传输支持所有特性,但也提供大量其他实验性方案的支持,包括 用 SQLite 进行本地开发。

Celery 可以单机运行,也可以在多台机器上运行,甚至可以跨越数据中心运行。

上手¶

如果这是你第一次尝试 Celery,或你从以前版本刚步入 Celery 3.0,那么你应该 阅读一下我们的入门教程:

First Steps with Celery Next Steps Celery 是…¶

简单

Celery 易于使用和维护,并且它 不需要配置文件 。

Celery 有一个活跃、友好的社区来让你寻求帮助,包括一个 邮件列表 和一个 IRC 频道 。

下面是一个你可以实现的最简应用:

from celery import Celery app = Celery('hello', broker='amqp:[email protected]//') @app.task def hello(): return 'hello world'

高可用性

倘若连接丢失或失败,职程和客户端会自动重试,并且一些中间人 通过 主/主 或 主/从 方式复制来提高可用性。

快速

单个 Celery 进程每分钟可处理数以百万计的任务,而保持往返延迟 在亚毫秒级(使用 RabbitMQ、py-librabbitmq 和优化过的设置)。

灵活

Celery 几乎所有部分都可以扩展或单独使用。可以自制连接池、 序列化、压缩模式、日志、调度器、消费者、生产者、自动扩展、 中间人传输或更多。

它支持

中间人

RabbitMQ, Redis, MongoDB (实验性), ZeroMQ (实验性) CouchDB (实验性), SQLAlchemy (实验性) Django ORM (实验性), Amazon SQS, (实验性) 还有更多…

并发

prefork(多进程), Eventlet, gevent 多线程/单线程

结果存储

AMQP, Redis memcached, MongoDB SQLAlchemy, Django ORM Apache Cassandra

序列化

pickle, json, yaml, msgpack zlib, bzip2 压缩 密码学消息签名 特性¶

监视

整条流水线的监视时间由职程发出,并用于内建或外部的工具 告知你集群的工作状况——而且是实时的。

深入了解….

工作流

一系列功能强大的称为“Canvas”的原语(Primitive)用于构建 或简单、或复杂的工作流。包括分组、连锁、分割等等。

深入了解….

时间和速率限制

你可以控制每秒/分钟/小时执行的任务数,或任务的最长运行时间, 并且可以为特定职程或不同类型的任务设置为默认值。

深入了解….

计划任务

你可以指定任务在若干秒后或在 datetime 运行,或你可以基于单纯的时间间隔或支持分钟、小时、每周的第 几天、每月的第几天以及每年的第几月的 crontab 表达式来使用 周期任务来重现事件。

深入了解….

自动重载入

在开发中,职程可以配置为在源码修改时自动重载入,包含对 Linux 上的 inotify(7) 支持。

深入了解….

自动扩展

根据负载自动重调职程池的大小或用户指定的测量值,用于限制 共享主机/云环境的内存使用,或是保证给定的服务质量。

深入了解….

资源泄露保护

--maxtasksperchild 选项用于控制用户任务泄露的诸如 内存或文件描述符这些易超出掌控的资源。

深入了解….

用户组件

每个职程组件都可以自定义,并且额外组件可以由用户定义。职程是用 “bootsteps” 构建的——一个允许细粒度控制职程内构件的依赖图。

框架集成¶

Celery 易于与 Web 框架集成,其中的一些甚至已经有了集成包:

Django django-celery Pyramid pyramid_celery Pylons celery-pylons Flask 不需要 web2py web2py-celery Tornado tornado-celery

集成包并非是严格必要的,但它们让开发更简便,并且有时它们在 fork(2) 上添加了比如关闭数据库连接这样的重要回调。

快速跳转¶

我想要阅读⟶

获取任务的返回值 在任务中使用日志 学习最佳实践 创建自定义的任务基类 向一组任务添加回调 分割任务 优化职程 内建的任务状态列表 创建自定义任务状态 设置自定义任务名称 跟踪开始任务 重试失败任务 获取当前任务 ID 获知任务分派到的队列 查看运行中职程列表 清空消息 检视职程的工作状况 查看职程上注册的任务 迁移任务到新中间人 事件消息类型列表 为 Celery 做贡献 配置设定的可用字段 任务失败的邮件通知 Celery 使用案例 自制远程控制命令 运行时修改职程的队列

跳转至 ⟶

中间人 应用 任务 调用 职程 后台运行 监视 优化 安全 路由 配置 Django 贡献 信号 FAQ API 参考 安装¶

你可以从 Python Package Index(PyPI)或源码安装 Celery。

用 pip 安装:

$ pip install -U Celery

用 easy_install 安装:

$ easy_install -U Celery 捆绑¶

Celery 也定义了一组用于安装 Celery 和给定特性依赖的捆绑。

你可以在 requirements.txt 中指定或在 pip 命令中使用方括号。多个捆绑 用逗号分隔。

$ pip install celery[librabbitmq] $ pip install celery[librabbitmq,redis,auth,msgpack]

以下是可用的捆绑:

序列化¶ celery[auth]:使用 auth 序列化。 celery[msgpack]:  使用 msgpack 序列化。 celery[yaml]:使用 yaml 序列化。 并发¶ celery[eventlet]:  使用 eventlet 池。 celery[gevent]:使用 gevent 池。 celery[threads]:  使用线程池。 传输和后端¶ celery[librabbitmq]:  使用 librabbitmq 的 C 库. celery[redis]:使用 Redis 作为消息传输方式或结果后端。 celery[mongodb]:  使用 MongoDB 作为消息传输方式( 实验性 ),或是结果后端( 已支持 )。 celery[sqs]:使用 Amazon SQS 作为消息传输方式( 实验性 )。 celery[memcache]:  使用 memcache 作为结果后端。 celery[cassandra]:  使用 Apache Cassandra 作为结果后端。 celery[couchdb]:  使用 CouchDB 作为消息传输方式( 实验性 )。 celery[couchbase]:  使用 CouchBase 作为结果后端。 celery[beanstalk]:  使用 Beanstalk 作为消息传输方式( 实验性 )。 celery[zookeeper]:  使用 Zookeeper 作为消息传输方式。 celery[zeromq]:使用 ZeroMQ 作为消息传输方式( 实验性 )。 celery[sqlalchemy]:  使用 SQLAlchemy 作为消息传输方式( 实验性 ),或作为结果后端( 已支持 )。 celery[pyro]:使用 Pyro4 消息传输方式( 实验性 )。 celery[slmq]:使用 SoftLayer Message Queue 传输( 实验性 )。 从源码安装¶

从 http://pypi.python.org/pypi/celery/ 下载最新版本的 Celery。

你可以通过以下步骤安装:

$ tar xvfz celery-0.0.0.tar.gz $ cd celery-0.0.0 $ python setup.py build # python setup.py install

如果不是在 virtualenv 里安装,最后一条命令必须以管理员权限执行。

使用开发版本¶ pip 途径¶

Celery 开发版本需要开发版本的 kombu 、 amqp 和 billiard 。

你可以用下面的 pip 命令来安装这些库最新的快照:

$ pip install https://github.com/celery/celery/zipball/master#egg=celery $ pip install https://github.com/celery/billiard/zipball/master#egg=billiard $ pip install https://github.com/celery/py-amqp/zipball/master#egg=amqp $ pip install https://github.com/celery/kombu/zipball/master#egg=kombu Git 途径¶

请见 Contributing 章节。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3